package com.arpa.oms.mapper;

import com.arpa.oms.domain.dto.OmsPayableDetailDTO;
import com.arpa.oms.domain.entity.OmsPayableDetail;
import com.arpa.oms.domain.vo.OmsPayableDetailVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * OMS应付明细 Mapper 接口
 * </p>
 *
 * @author LEO
 * @since 2020-12-04
 */
public interface OmsPayableDetailMapper extends BaseMapper<OmsPayableDetail> {

    /**
     * 查询列表
     * @param omsPayableDetailDTO
     * @return
     */
    List<OmsPayableDetailVO> queryList(OmsPayableDetailDTO omsPayableDetailDTO);

    /**
     * 查询合计,包含总数
     * @param omsPayableDetailDTO
     * @return
     */
    OmsPayableDetailVO queryListSum(OmsPayableDetailDTO omsPayableDetailDTO);

    /**
     * 生成结算单时更新费用金额
     *
     * @param code             费用明细标识
     * @param thisSettledMoney 本次结算金额
     * @param byCode           操作人code
     * @param name             操作人姓名
     */
    void updateSettlementMoney(String code, BigDecimal thisSettledMoney, String byCode, String name);

    /**
     * 删除、修改结算单后还原收费信息
     * @param code 费用标识
     * @param restoreMoney 要还原的金额
     */
    void restoreSettlementStatus(@Param("code") String code, @Param("restoreMoney") BigDecimal restoreMoney, @Param("amountReduce") BigDecimal reduceMoney);

    /**
     * 收款单审核通过后确认收费信息
     * @param code 费用标识
     * @param confirmMoney 确认金额
     */
    void confirmSettlementStatus(@Param("code") String code, @Param("confirmMoney") BigDecimal confirmMoney);
}
